RestTemplate이란
- spring 3.0 부터 지원한다.
- Spring에서 제공하고 있는 JdbcTemplate이나, JmsTemplate과 같은 맥락의 Template
- http 통신에 유용하게 쓸 수 있는 템플릿
- RESTful Service 호출과 관련된 여러 메소드를 제공하여 REST 클라이언트를 쉽게 개발할 수 있도록 도와준다.
동작 순서

장점
- HTTP 서버와의 통신을 단순화시킨다.
- RESTful 원칙을 지킨다.
- 기계적이고 반복적인 코드를 최대한 줄여준다.
- json, xml 를 쉽게 응답받을 수 있다.
아래와 같이 6개의 HTTP Method를 제공한다.
| DELETE | delete(java.lang.String, java.lang.Object…) | |
|---|---|---|
| GET | getForObject (java.lang.String, java.lang.Class, java.lang.Object…) | get 요청을 보내고 ResponseEntity로 반환받음 |
| GET | getForEntity (java.lang.String, java.lang.Class, java.lang.Object…) | |
| HEAD | headForHeaders (java.lang.String, java.lang.Object…) | |
| OPTIONS | optionsForAllow (java.lang.String, java.lang.Object…) | |
| POST | postForLocation (java.lang.String, java.lang.Object, java.lang.Object…) | |
| POST | postForObject (java.lang.String, java.lang.Object, java.lang.Class, java.lang.Object…) | post 요청을 보내고 ResponseEntity로 반환받음 |
| PUT | put (java.lang.String, java.lang.Object, java.lang.Object…) | |
| any | exchange (java.lang.String, org.springframework.http.HttpMethod, org.springframework.http.HttpEntity, java.lang.Class, java.lang.Object…) | 헤더세팅해서 HTTP Method로 요청보내고 ResponseEntity로 반환받음 |
| any | execute (java.lang.String, org.springframework.http.HttpMethod, org.springframework.web.client.RequestCallback, org.springframework.web.client.ResponseExtractor, java.lang.Object…) |
HttpClient
org.springframework.http.client 패키지에 있다.
HttpClient는 HTTP를 사용하여 통신하는 범용 라이브러리이고, RestTemplate은 HttpClient 를 추상화(HttpEntity의 json, xml 등)해서 제공해준다.
따라서 내부 통신(HTTP 커넥션)에 있어서는 Apache HttpComponents 를 사용한다.
예제
1 | public ApiClient() { |